home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / PRG-64.ARC / PGM OVERVIEW.DOC < prev    next >
Encoding:
Text File  |  2019-04-13  |  11.0 KB  |  219 lines

  1.                                   ╨╟═-64
  2.                ╨ROGRAM ╟RAPHICS ═ANAGEMENT ON THE ├OMMODORE 64
  3.              ┬Y ─AVID ╨. ─ARUS, ╦EN ╞RENCH, AND ╠OUIS ╥. ╫ALLACE
  4.  
  5.     ╧RIGINALLY PUBLISHED IN ├OMMODORE ╨OWER/╨LAY -- ╞EBRUARY/═ARCH 1986
  6.  
  7.  
  8.                            ╧╓┼╥╓╔┼╫ OF ╨╟═-64
  9.                            ------------------
  10.  
  11.       ╚AVE YOU EVER BEEN WRITING A ┬┴╙╔├ PROGRAM THAT USES SOME PART OF THE 
  12. ├OMMODORE 64'S GRAPHICS ONLY TO FIND THE PROGRAM RUNS TOO SLOW? ╩UST TO 
  13. PLOT A POINT REQUIRES SEVERAL LINES OF PROGRAM.  ┴NIMATING SPRITES USING 
  14. ╨╧╦┼'S REDUCES THEIR MOTION TO A CRAWL.  ┘OUR ALTERNATIVES ARE TO WRITE IN 
  15. MACHINE LANGUAGE OR USE A ┬┴╙╔├ LANGUAGE EXTENSION.
  16.  
  17.       "╨╟═-64" GIVES YOU THE BEST OF BOTH THOSE ALTERNATIVES.  ╨╟═, WHICH 
  18. STANDS FOR ╨ROGRAM ╟RAPHICS ═ANAGER, IS A LIBRARY OF VERY FAST 
  19. MACHINE-LANGUAGE SUBROUTINES THAT YOU USE LIKE ┬┴╙╔├ COMMANDS.  ╘HIS SYSTEM 
  20. ALLOWS YOU TO USE THE HIGH-RESOLUTION GRAPHICS AND ANIMATION OF THE 
  21. ├OMMODORE 64 WITHOUT ┬┴╙╔├'S SPEED LIMITATIONS, AND ALSO HAVE THE USE OF 
  22. THE ╥┴═ HIDDEN UNDER THE OPERATING SYSTEM.
  23.       
  24.       ╧NE OF THE MANY POWERFUL FEATURES OF ╨╟═ IS THE APPROACH TO CHARACTER 
  25. GRAPHICS.  ╚ERE, THERE IS NO SEPARATE TEXT MODE OR GRAPHICS MODE.  ╔N MANY 
  26. WAYS, THIS IS THE WAY THE ┴PPLE ═ACINTOSH WORKS; AND, IN FACT, THERE ARE 
  27. STRONG SIMILARITIES BETWEEN THE ═AC AND ╨╟═'S GRAPHIC ABILITIES.
  28.  
  29.       ╠IKE THE ═ACINTOSH, ╨╟═ ALLOWS YOU TO FREELY MIX TEXT AND GRAPHICS ON 
  30. THE SAME SCREEN.  ┘OU CAN HAVE AS MANY DIFFERENT TEXT STYLES AS YOU WISH.  
  31. ╘EXT CAN BE ENLARGED TO DOUBLE HEIGHT OR DOUBLE WIDTH OR BOTH.  ╨╟═ ALSO 
  32. SUPPORTS 80-COLUMN REGULAR AND DOUBLE-HEIGHT GRAPHICS.  ╘HE CHARACTERS CAN 
  33. BE IN ANY OF 16 COLORS, AND EACH CHARACTER'S BACKGROUND COLOR CAN BE 
  34. INDEPENDENTLY CONTROLLED JUST AS IN ┼XTENDED ├OLOR ╘EXT ═ODE.  ┼ACH 
  35. CHARACTER STRING CAN BE PRINTED AT SPECIFIC SCREEN LOCATIONS, GIVING YOU A 
  36. VERY EFFECTIVE ╨╥╔╬╘ ┴╘ COMMAND.
  37.  
  38.       ╨╟═ ALSO ALLOWS YOU TO EASILY PLOT POINTS, DRAW LINES, AND FILL AN 
  39. AREA IN ANY COLOR YOU WISH, SO YOU CAN INTERMIX YOUR NEW TEXT GRAPHICS WITH 
  40. BITMAP DISPLAYS LIKE CHARTS AND DRAWINGS.  ╞OR THOSE OF YOU INTERESTED IN 
  41. GRAPHING DATA, A 3─ ┬┴╥ COMMAND IS INCLUDED.  ╘O MAKE 3─ BARS, JUST GIVE 
  42. THE SIZE, COLOR AND LOCATION, AND THEY QUICKLY GROW ON THE SCREEN.  ╘HIS IS 
  43. GREAT FOR COMBINING TEXT AND BITMAP IMAGES IN COLORFUL PRESENTATION-QUALITY 
  44. GRAPHIC DISPLAYS.
  45.  
  46.       ╒SING ╨╟═, YOU CAN EVEN EMULATE WINDOWS IN YOUR PROGRAMS.  ╫INDOWS 
  47. ARE SUB-SCREENS WITHIN THE MAIN SCREEN, AND CAN BE ANY SIZE FROM A FULL 
  48. SCREEN TO A SINGLE CHARACTER.  ┘OU CAN EASILY SUPERIMPOSE ONE IMAGE ON 
  49. ANOTHER (FOR INSTANCE, SUPERIMPOSE A GRAPH ON TOP OF A SPREADSHEET), 
  50. MANIPULATE IT, AND THEN RESTORE THE ORIGINAL UNDERNEATH.  ╧R MAYBE YOU WANT 
  51. TO GET A DIRECTORY, PRINT IT ON THE SCREEN IN A WINDOW, AND THEN POP THE 
  52. WINDOW BACK UP WITHOUT EFFECTING WHAT'S UNDER IT.  ╞IVE NEW COMMANDS ARE 
  53. PRESENT SO YOU CAN COPY A WINDOW, RESTORE IT, FILL IT WITH A VALUE, REVERSE 
  54. IT, OR EVEN COLOR IT.
  55.  
  56.       ╫HEN YOU USE THE WINDOW-COPY COMMAND, YOU MUST HAVE A SECTION OF 
  57. MEMORY SET ASIDE FOR IT TO BE STORED.  ╘HERE ARE A NUMBER OF PLACES IN THE 
  58. 64 WHERE FREE ╥┴═ IS AVAILABLE TO DO JUST THAT.  ╞OR INSTANCE, THERE IS 8╦ 
  59. OF ╥┴═ UNDER ┬┴╙╔├ (40960-53247) AND THERE IS ANOTHER 8╦ UNDER THE KERNAL 
  60. (57344-65343).  ╘HERE IS ALSO 4╦ OF ╥┴═ AT $├000 (49152-53247) AND ANOTHER 
  61. 195 BYTES IN THE CASSETTE BUFFER (828-1023).  ╘HIS GIVES OVER 20╦ OF 
  62. ADDITIONAL ╥┴═ FOR YOU TO USE AS SCREENS AND STORAGE AREAS.  ╘O ACCESS 
  63. THESE AREAS, THERE ARE SEVERAL MEMORY MANAGEMENT COMMANDS, INCLUDING THE 
  64. ╙┼╘ ┴──╥┼╙╙ AND ╪╞┼╥ ═┼═╧╥┘ COMMANDS.
  65.  
  66.       ╙PRITES (MOVEABLE OBJECT BLOCKS) ARE AN IMPORTANT FEATURE OF THE 
  67. ├OMMODORE 64.  ╨╟═ FULLY SUPPORTS SPRITES WITH OVER A DOZEN COMMANDS, 
  68. INCLUDING ONE THAT ALLOWS YOU TO USE A JOYSTICK OR THE CURSOR KEYS TO 
  69. CONTROL AN ICON SPRITE IN MUCH THE SAME WAY AS THE ═ACINTOSH'S MOUSE IS 
  70. USED.  ╬O PROGRAMMING IS REQUIRED TO MOVE THE ICON ONCE IT HAS BEEN 
  71. ACTIVATED.
  72.  
  73.       ╔N ADDITION, ╨╟═ PROVIDES A ╙╨╥╔╘┼ ┴╬╔═┴╘┼ COMMAND.  ┴NIMATE ALLOWS 
  74. THE ┬┴╙╔├ PROGRAMMER TO TELL A SPRITE TO GO FROM ITS CURRENT POSITION TO A 
  75. GIVEN X AND Y AT A SPECIFIED SPEED.  ╘HE SPRITE IMMEDIATELY BEGINS TO MOVE, 
  76. WHILE ┬┴╙╔├ IS FREE TO PROCESS OTHER COMMANDS.  ╙PRITES CAN ALSO BE 
  77. INTERNALLY ANIMATED BY CHANGING THE POINTER TO THE DATA THAT DESCRIBES 
  78. THEIR FORM.
  79.  
  80.       ╔F ╙PRITE ┴NIMATE ISN'T ENOUGH, THERE IS ANOTHER SPRITE MODE 
  81. AVAILABLE TO ╨╟═ USERS: 14-╙╨╥╔╘┼ MODE.  ╘HIS USES MORE INTERRUPT 
  82. PROGRAMMING TECHNIQUES TO GIVE YOU AN ADDITIONAL SIX SPRITES.
  83.  
  84.       ╘HE PROGRAM TITLED ╨╟═.┬╔╬ IS THE MACHINE LANGUAGE THAT MAKES UP THE 
  85. ╨╟═ SYSTEM.  ╘HE PROGRAM TITLED ╨╟═ IS THE ┬┴╙╔├ LOADER WHICH LOADS ╨╟═.┬╔╬
  86. ONTO MEMORY AND INITIALIZES THE ╨╟═ SYSTEM.  ╘HE FILE ├╚┴╥ ╙┼╘╙ CONTAINS THE
  87. 80 COLUMN AND OTHER CHARACTER SETS.  ╘HESE ARE THE MINIMUM SYSTEM.  ╙EVERAL 
  88. DEMONSTRATION PROGRAMS AND THEIR ASSOCIATED DATA FILES ARE ALSO PROVIDED.
  89.  
  90.       ╘HERE ARE A TOTAL OF 41 COMMAND IN ╨╟═.  ╘O GET THE RIGHT RESULTS, 
  91. YOU MUST BE CAREFUL TO USE THE CORRECT SYNTAX.  ╙OME OF THE PARAMETERS ARE 
  92. OPTIONAL AND CAN BE OMITTED IF NOT NEEDED.  ╘HESE OPTIONAL PARAMETERS ARE 
  93. ENCLOSED IN BRACKETS IN THE FOLLOWING PROGRAMMERS' DOCUMENTATION.  ╘HOSE 
  94. PARAMETERS NOT ENCLOSED WITH BRACKETS ARE REQUIRED.
  95.  
  96.  
  97.  
  98.                                   ╨╟═ ╘IPS
  99.                                   --------
  100.  
  101. 1.  ╘HE PROGRAM DOES NOT SUPPORT TAPE OR ╥╙232.
  102.  
  103. 2.  ┬E SURE TO SAVE THE PROGRAMS YOU WRITE BEFORE YOU RUN THEM.
  104.  
  105. 3.  ┴LWAYS ENTER AND EXIT 14-SPRITE MODE AS DESCRIBED IN THE ├OMMAND
  106.     SUMMARY FOLLOWING THIS SECTION.
  107.  
  108. 4.  ┬E CAREFUL WITH YOUR MEMORY MANAGEMENT.  ╘RYING TO WRITE OUTSIDE OF THE
  109.     AVAILABLE ╥┴═ AREAS (SEE ═EMORY ═AP) WILL CAUSE THE COMPUTER TO CRASH.
  110.  
  111. 5.  ╙TRANGE EFFECTS CAN BE ACHIEVED WHEN MOVING SPRITES ACROSS THE SCANLINE
  112.     BOUNDARY.  ╘HESE MAY BE USEFUL IN CERTAIN SITUATIONS.
  113.  
  114. 6.  ╘HE FIRST LINES OF ANY PROGRAM SHOULD BE:
  115.  
  116.         10  ╔╞ ┴=0 ╘╚┼╬ ┴=1:╠╧┴─ "╨╟═",8,1:╥┼═ ╠╧┴─ ╨╟═
  117.         20  ╨╧╦┼ 55,255:╨╧╦┼ 56,131:├╠╥:╥┼═ ╠╧╫┼╥ ╘╧╨ ╧╞ ┬┴╙╔├ ┬┼╠╧╫ ╨╟═
  118.         30  ┬┴=33792:╥┼═ ─┼╞╔╬┼ ┬┴╙┼ ┴──╥┼╙╙
  119.         40  ╙┘╙ ┬┴+6,╚╔╥┼╙ ┴──╥┼╙╙, ├╧╠╧╥ ═┼═╧╥┘:╥┼═ ╙┼╘ ┴──╥┼╙╙
  120.         50  ╙┘╙ ┬┴:╥┼═ ┴├╘╔╓┴╘┼ ╨╟═
  121.         60  ╙┘╙ ┬┴+24:╥┼═ ┼╬╘┼╥ ╚╔╥┼╙ ═╧─┼
  122.  
  123. 7.  ┼ND YOUR PROGRAM WITH:
  124.  
  125.         10000 ╙┘╙ ┬┴+27:╙┘╙ ┬┴+3:┼╬─:╥┼═ ╚╔╥┼╙ ╧╞╞, ╨╟═ ─┼┴├╘╔╓┴╘┼─
  126.  
  127.     ╔F YOUR PROGRAM STOPS AND YOU SUSPECT IT HAS HIT A SYNTAX ERROR, TRY
  128.     TYPING ╟╧╘╧ 100000.  ╘HIS WILL GET YOU OUT OF ╨╟═ AND YOU CAN CHECK FOR
  129.     ERROR MESSAGES ON THE TEXT SCREEN.
  130.  
  131. 8.  ╞OR THE MOST EFFICIENT USE OF YOUR MEMORY, WE RECOMMEND YOU USE 57344
  132.     AS YOUR BITMAP SCREEN AND 52224 AS YOUR COLOR MEMORY.  ╘HIS ALLOWS THE
  133.     ╥┴═ AT 40960-52223 TO BE USED FOR STORAGE OF CHARACTER SETS, SCREENS,
  134.     WINDOWS AND SPRITES.
  135.  
  136. 9.  ┴LL VALUES FOR PARAMETERS ARE IN DECIMAL.
  137.  
  138. 10. ┴RRAYS CAN BE USED IN PARAMETERS. 
  139.  
  140.       ╫HEN USING WINDOWS, KEEP IN MIND THAT IT IS UP TO YOU TO HANDLE THE 
  141. MEMORY MANAGEMENT.  ╨╟═ WILL WRITE OR READ TO ANY AREA YOU TELL IT AND IF 
  142. YOU ARE NOT CAREFUL, THE RESULTS ARE UNPREDICTABLE.  ╞OR EXAMPLE, WHEN YOU 
  143. WANT TO STORE A GIVEN AREA AS A WINDOW, YOU MUST KNOW HOW MUCH MEMORY IT 
  144. WILL TAKE TO STORE A WINDOW OF ITS SIZE IN ORDER TO KNOW WHERE IT CAN BE 
  145. STORED.  ╔F YOUR WINDOW IS TEN ROWS BY TEN COLUMNS, THAT EQUALS 100 
  146. CHARACTER-SIZE BLOCKS OF ╥┴═.  ┼ACH CHARACTER BLOCK HAS EIGHT BYTES OF ╥┴═ 
  147. FOR BITMAP AND ONE BYTE FOR COLOR MEMORY.  ╙O A TEN-BY-TEN WINDOW REQUIRES 
  148. 900 BYTES PLUS TWO BYTES OVERHEAD, FOR A TOTAL OF 902 BYTES.  (╘HE TWO-BYTE 
  149. OVERHEAD IS ALWAYS THE SAME, REGARDLESS OF WINDOW SIZE.)  ┘OU CAN FIND THE 
  150. ADDRESS OF THE LAST BYTE OF MEMORY USED BY CODING THE PROCEDURE GIVEN UNDER 
  151. THE ├╧╨┘ ╫╔╬─╧╫ COMMAND.
  152.  
  153.       ╫HEN YOU WANT TO RESTORE A COPIED WINDOW, USE THE ╥┼╙╘╧╥┼ ╫╔╬─╧╫ 
  154. COMMAND WITH THE ADDRESS OF THE AREA OF ╥┴═ WHERE THE STORED WINDOW BEGINS, 
  155. AND THE ROW AND COLUMN TO WRITE IT BACK TO.  ╔T WILL BE RESTORED (WITH 
  156. COLOR) TO THE SPECIFIED AREA OF THE SCREEN.
  157.  
  158.       ╘HE SPRITE COMMANDS OFTEN REQUIRE SPRITE POINTERS.  ┴ SPRITE POINTER 
  159. IS A NUMBER THAT INDICATES WHERE IN MEMORY THE FIRST BYTE OF SPRITE DATA IS 
  160. LOCATED.  ╘HE ╙╨╥╔╘┼ ╨╠╧╘ AND ┴╬╔═┴╘┼ COMMANDS BOTH USE SPRITE POINTERS IN 
  161. THE RANGE OF 0-255.  ╘HE SPRITE DATA MUST BE WITHIN THE 16╦ BANK OF MEMORY 
  162. YOU HAVE SET YOUR SCREENS AT USING THE ╙┼╘ ┴──╥┼╙╙ COMMAND.  ╞OR INSTANCE, 
  163. IF YOUR SCREEN IS AT 57344, ALL SPRITE DATA MUST BE WITHIN THE AREA OF 
  164. 49152-65535.  ┴ SPRITE DESCRIPTION STORED AT 49152 HAS A POINTER VALUE OF 
  165. ZERO, WHILE ONE AT 49216 (49152+64) HAS A POINTER VALUE OF ONE.  ╙O POINTER 
  166. ZERO BEGINS AT THE FIRST ADDRESS OF THE VIDEO BANK YOU ARE IN, WHILE 
  167. POINTER 255 LIES AT THE END OF THE 16╦ VIDEO BANK YOU ARE IN.  ╥EMEMBER 
  168. THAT THE SPRITES MUST BE STORED IN THE SAME BANK AS YOUR SCREEN WHEN YOU 
  169. WANT TO USE THEM.
  170.  
  171.       ╚OWEVER, SEVERAL SPRITE UTILITY COMMANDS (╙╨╥╔╘┼ ╥┼╞╠┼├╘, ╙╨╥╔╘┼ 
  172. ╥┼╓┼╥╙┼ AND ╙╨╥╔╘┼ ╪╞┼╥ USE POINTERS IN THE RANGE OF 0-1023.  ╘HE 
  173. DIFFERENCE HERE IS THESE COMMANDS ARE NOT USED TO VISUALIZE SPRITES, BUT 
  174. INSTEAD ARE SPECIAL WAYS OF HANDLING SPRITE DATA IN MEMORY.  ╘HIS IS ONLY 
  175. THEORETICAL, SINCE SOME OF THESE POTENTIAL LOCATIONS ARE IN USE BY THE 
  176. COMPUTER (╙EE ═EMORY ═AP).  ┬Y USING THESE POINTERS, YOU CAN MANIPULATE 
  177. SPRITE DATA WITH THESE SPRITE UTILITIES.
  178.  
  179.       ╞OR INSTANCE, SUPPOSE YOUR SCREEN IS AT 57344, WHICH MEANS THE VIDEO 
  180. CHIP IS LOOKING AT LOCATIONS 49152-65535.  ┴LL SPRITES MUST BE LOCATED 
  181. SOMEWHERE WITHIN THIS AREA TO BE SEEN.  ╚OWEVER, THE SPRITES YOU ARE NOT 
  182. USING AT THE TIME CAN BE STORED SOMEWHERE ELSE, LIKE UNDER ┬┴╙╔├ ╥╧═ AT 
  183. 40960.  ╫HEN THE TIME COMES FOR YOU TO USE THOSE STORED SPRITES, THE ╙╨╥╔╘┼ 
  184. ╪╞┼╥ COMMAND CAN BE USED TO TRANSFER THEM FROM THEIR TEMPORARY STORAGE TO 
  185. SOMEWHERE IN THE ACTIVE VIDEO BANK.
  186.  
  187.       ╚ERE IS AN EXAMPLE OF THE ╙╨╥╔╘┼ ╪╞┼╥ COMMAND:
  188.  
  189.                     ╙┘╙ ┬┴+96,512,10,767
  190.  
  191.       ╔T SAYS TO TRANSFER THE SPRITES STARTING AT ABSOLUTE SPRITE POINTER 
  192. 512 (40960 DECIMAL) AND TAKE TEN OF THEM (10*64 BYTES) AND PUT THEM AT 
  193. ABSOLUTE POINTER 767 (49152).  ╚ERE THE SPRITE POINTER OF 49152 IS 767, NOT 
  194. ZERO, AS IT WOULD BE IF YOU WERE MOVING OR ANIMATING A SPRITE.
  195.  
  196.  
  197.  
  198.                            ╒SER ═EMORY ═AP
  199.                            ---------------
  200.  
  201.            0-255                             ╬OT AVAILABLE
  202.          251-254                             ╞REE ZERO PAGE
  203.          255-827                             ╬OT AVAILABLE
  204.          828-1023                            ╞REE ╥┴═
  205.         1024-2047                            ╬ORMAL LOW-RES SCREEN
  206.         2048-33791                           ┬┴╙╔├ ╥┴═
  207.        33792-40959                           ╨╟═ SYSTEM
  208.        40960-53247                           ╞REE ╥┴═
  209.        53248-57343                           ╬OT AVAILABLE
  210.        57344-65343                           ╞REE ╥┴═
  211.        65344-65535                           ╬OT AVAILABLE
  212.  
  213.  
  214. ╘HIS FILE WAS PAINSTAKINGLY TYPED IN BY ╘HE ╙HARK! FROM THE ╨╟═ ARTICLE IN 
  215. THE ╞EB./═ARCH 1986 ├OMMODORE ╨OWER/╨LAY MAGAZINE BY ─AVID ╨. ─ARUS, ╦EN 
  216. ╞RENCH, AND ╠OUIS ╥. ╫ALLACE.  ╘HE PROGRAM HAS BEEN GRACIOUSLY PLACED IN 
  217. THE PUBLIC DOMAIN BY THE AUTHORS.  ╞OR A COMPLETE LIST OF ╨╟═-64 COMMAND 
  218. SYNTAX, SEE ╨╟═ ├╧══┴╬─╙.─╧├.
  219.